1. Technical Field
The present invention relates in general to data processing and in particular to creating and selecting an arbiter within a data processing system. Still more particularly, the present invention relates to a system, method and computer program product for creating and dynamically selecting an arbiter design within a data processing system on the basis of command history.
2. Description of the Related Art
In many components on a data processing system, the speed at which commands arrive at the component exceeds the speed at which commands can be processed by the component. Examples of this problem include an arbiter within a memory controller, though many system components exhibit similar receipt-to-execution bottlenecks. In the case of arbiters, the continuously-widening gap between processor speeds and memory latencies increases the pressure for better memory controller designs, and, in particular, increases the need for better arbiters within memory controllers.
An arbiter is a component of a memory controller or other device, which is responsible for the ordering of commands or requests before they are forwarded to a receiving device. Arbiter design addresses two main issues. The first issue addressed is the ongoing attempt to transmit commands to a target in an order similar the order in which they are generated by senders. The second issue is maximizing command bus and data bus utilization by determining appropriate design parameters and by minimizing delays between memory commands. Suboptimal ordering of commands will introduce unnecessary delays, poorly utilize data and command buses, cause retry operations because of unbalanced processing of commands, and therefore will degrade the overall system performance.
What is needed is an approach, including a method of arbiter design and a method of arbiter selection, that addresses both issues systematically and attempts to create and select an optimal arbiter by considering both issues concurrently.